1. Field of the Invention
The present invention relates to HTTP request handling and, more particularly, to client-side aggregation of context-sensitive request results where results for aggregation are asynchronously produced by multiple servers.
2. Description of the Related Art
In an application server architecture, requests are made for resources (URLs) that often include a set of operations to be performed, such as includes or forwards to other resources. Generally, a small percentage of the operations are expensive in terms of incurred delay. The synchronous nature of a conventional request lifecycle causes a delay incurred by one operation to affect throughput as a whole. Additionally, resources of the server that are primarily responsible for handling a request are tied-up until the request-context has been entirely processed and a response conveyed to a requesting client. Further, the requesting client does not receive a response to their request until the primary server has aggregated responses from all operations, which execute sequentially.
Current solutions to the above problem include utilizing frames or server side includes (SSI), where each portion of a requested Web page is associated with a separate distinct request from a client. Use of frames and SSIs, however, results in an inability to share context related to the original request among the separate distinct requests. Sharing context among these requests is highly desired because the operations called by the requests need access to the original request information sent by the client or set in the processing before dispatch.
U.S. patent application Ser. No. 11/456,905 disclosed a solution for aggregating content from different container types and languages with shared request context synchronously. That is, the referenced solution provided an extensible framework that allows a Remote Request Dispatcher (RRD) to handle portlets and other containers. This technology permits a server to distribute request handling operations across a set of servers. Thus, a single request-context is handled by multiple servers. The disclosed solution, however, still requests that a primary server waits for remote content to return, de-serializes it, and return serialized responses, which occur synchronously.
US patent application Ser. No. 11/846,423 disclosed a solution for client side aggregation of asynchronous context-sensitive request operations in a single application server environment. This solution solved a problem of a server or proxy being responsible for aggregating operation results, which can be costly in terms of memory and request processing resources. Instead, US patent application Ser. No. 11/846,423 offloads aggregation responsibility to a client. This client-side aggregation, however, was limited to a single server and was not able to pass request context to multiple servers.
The problem solved by the present invention is that of asynchronously aggregating remote content from multiple servers within the same request context. There does not appear to be any known solutions to this problem as even the concept of aggregating content from different container types and languages with shared request context (e.g., U.S. patent application Ser. No. 11/456,905) is considered unique, as is the concept of client-side aggregation of asynchronous context-sensitive request operations (e.g., U.S. patent application Ser. No. 11/846,423).